package cn.edu360.biz.chain;

import java.io.File;

import cn.edu360.common.util.SnowflakeIdWorker;

public abstract class AbstractDataLogCollectChain {

	/**
	 * 日志收集处理对象
	 */
	protected AbstractDataLogCollectChain successor;

	/**
	 * 日志处理链
	 */
	public abstract void dateLogHandlerChain(String src, String dest);

	/**
	 * 设置下一处理对象
	 * 
	 * @param successor
	 */
	protected void setNextSuccessor(AbstractDataLogCollectChain successor) {
		this.successor = successor;
	}

	/**
	 * 过滤特定的文件
	 * 
	 * @param file
	 *            文件
	 * @param dir
	 *            文件夹路径对象
	 * @return
	 */
	protected File[] filterFileList(File dir, String name) {
		return dir.listFiles((file, n) -> {
			if (name.startsWith(name))
				return Boolean.TRUE;
			return Boolean.FALSE;
		});
	}

	/**
	 * 将文件中的文件移动位置
	 * 
	 * @param 文件数组 
	 * @param 目标位置路径 若目标路径不存在则创建目录
	 * @param 是否需要在文件的添加随机后缀
	 */
	protected void dirFileRemoveTo(File[] files, String dest, boolean bol) {
		  //将日志文件移动至 待上传的文件
		File tempFileDir = new File(dest);
		if (!tempFileDir.exists()) {
			tempFileDir.mkdirs();// 创建文件夹
		}
		for (File f : files) {
			String reName = tempFileDir.getPath() + "/" + f.getName();
			if (bol) {//是否需要在文件的添加随机后缀
				reName+="."+SnowflakeIdWorker.getGenKey();  // 日志文件的移动
			}
			// 移动至待上传的文件夹
			f.renameTo(new File(reName));
		}
	}
}
